package com.joker.springcloud.controller;

import com.joker.springcloud.pojo.Dept;
import com.joker.springcloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 提供服务
 *
 * @Author JokerKS
 * @Date 2021/12/20 09:23
 * @Version 1.0
 */
@RestController
public class DeptController {

	@Autowired
	private DeptService deptService;

	//获取一些配置信息，得到具体的微服务
	@Autowired
	private DiscoveryClient discoveryClient;

	@PostMapping("/dept/add")
	public boolean addDept(@RequestBody Dept dept) {
		return deptService.addDept(dept);
	}

	@GetMapping("/dept/get/{id}")
	public Dept queryById(@PathVariable("id") Long id) {
		return deptService.queryById(id);
	}

	@GetMapping("/dept/list")
	public List<Dept> addDept() {
		return deptService.queryAll();
	}

	//注册进来的一些微服务，获取一些消息
	@RequestMapping("/dept/discovery")
	public Object discovery() {
		//	获取微服务列表清单
		List<String> services = discoveryClient.getServices();
		System.out.println("discovery=>services:" + services);

		//得到一个具体的微服务
		List<ServiceInstance> instances = discoveryClient.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
		for (ServiceInstance instance : instances) {
			System.out.println(
					instance.getHost() + "\t" + // 主机名称
							instance.getPort() + "\t" + // 端口号
							instance.getUri() + "\t" + // uri
							instance.getServiceId() // 服务id
			);
		}
		return this.discoveryClient;
	}
}
